<?php
/**
 * Class de connexion � la base de donn�es par PDO
 * 
 * 
 * @name database.class.php
 * @author Erwann LE GUEN <erwann.leguen@gmail.com> 
 * @copyright Erwann LE GUEN 2009/12
 * @version 1.0.0

 */ 
	class Bdd {
	
		/**
		 * Instance de la classe.
		 */
		private static $instance;
		
		/* Type connexion true=persistante, false=non persistante */
		private static $persistante;
		
		/* Alias de connexion */
		private $pdo;
		
		/* Etat de la connexion 1=connect�, 0=d�connect�      */
		private $connected;
		
		/**
		 * Cette fonction est le constructeur de la classe.
		 * Il est priv� car il ne doit pas �tre appel� directement.
		 * Il appelle la connexion � la base de donn�es.
		 */
		private function __construct() {
			$this->connected=$this->connexion();
	    }
  
		/**
		 * Cette fonction remplace le constructeur de la classe. 
		 * Elle s'appelle de la fa�on suivante :
		 * $bdd = BDD::getInstance().
		 * Au premier appel, le constructeur de la classe est appel�. A tous les appels suivants, l'instance
		 * qui existe d�j� est retourn�e. Le constructeur r�el est donc appel� une seule fois.
		 *
		 * Retourne une connexion non persistante
		 */
		public static function getInstance() {
			self::$persistante=false;
			if ( !isset(self::$instance) ) {
				self::$instance = new Bdd();
			}
			return self::$instance;
	    }

		/**
		* Idem getInstance(), mais renvoie une connexion persistante
		*/
		public static function getInstancePersistante() {
			self::$persistante=true;
			if ( !isset(self::$instance) ) {
				self::$instance = new Bdd();
			}
			return self::$instance;
	    }
		
		public function getPdo() {
			return $this->pdo;
		}
		
		public function isConnected() {
			return $this->connected;
		}
		
		public function query($sql) {
			return $this->pdo->query($sql);
		}
                
                public function tabResult($pReq)
		{
                    $TabRes = mysql_fetch_array($pReq);
                    return $TabRes ;
                }
                
                public function execute($pReq)
		{
                    $Res =  mysql_query($pReq) or die("erreur avec la requete d'execution");
                    return $Res ;
                }

		
		/**
		 * Destructeur de la classe. Il appelle la d�connexion de la base.
		 *
		 */
		public function __destruct() {
			$this->deconnexion();
	    }
		
		/**
		 * Cette fonction permet la connexion � la base de donn�es.
		 */
		private function connexion(){
		$resultat=0;
				
		try{
			$this->pdo = new PDO('mysql:host='.SERVEUR.';dbname='.BASE, NOM, PASSE, array(PDO::ATTR_PERSISTENT => self::$persistante));
			$resultat=1;
		}
		catch(PDOException $pdoe){
			$resultat=0;
			echo "<p>Classe Bdd.php, erreur dans function connexion() :<br/>";
			echo $pdoe->getMessage()."<br/></p>\n";
		}
		
		return $resultat;
		}
		
		/**
		 * Cette fonction permet la deconnexion de la base de donn�es.
		 */
		public function deconnexion(){
			$resultat=0;
			$this->pdo=null;
			return $resultat;			
		}
		
		
	}
?>